#===istalismanplugin===
# -*- coding: utf-8 -*-

# $Revision: 58 $
# $Author: rchiganov@gmail.com $
# $Date: 2013-12-14 19:10:32 +0000 (Sat, 14 Dec 2013) $

#---------------------------------------------------------------------------------------------------

# Плагин даты 2011 год

#---------------------------------------------------------------------------------------------------

import time
import datetime

#---------------------------------------------------------------------------------------------------

DATA_BD = {}
DATA_FILE = 'statuser.txt'

def statuser_load(groupchat):
	if check_file(groupchat, DATA_FILE):
		lfile = 'dynamic/' + groupchat + '/' + DATA_FILE
		try:
			DATA_BD[groupchat] = eval(read_file(lfile))
			for x in DATA_BD[groupchat].keys():
				DATA_BD[groupchat][x]['timejoin'] = 0
		except:
			DATA_BD[groupchat] = {}
			write_file(lfile, str('{}'))

def handler_data_join (groupchat, nick, aff, role):
        if groupchat in DATA_BD:
                if len(nick)>19:
                    return

                jid = get_true_jid(groupchat+'/'+nick) # узнаем учетку вошедшего

                #получаем дату которая сейчас
                dt_utc = datetime.datetime.utcnow()    # Текущее время с учетом часового пояса
                data_now = dt_utc.ctime()              # Tue Jul 5 09:08:27 2011

                (year, month, day, hour, minute, second, weekday, yearday, daylightsavings) = time.localtime()
                if jid in DATA_BD[groupchat]:
                    DATA_BD[groupchat][jid]['timejoin']= time.time()
                else:
                    file='dynamic/'+groupchat+'/' + DATA_FILE
                    txt=eval(read_file(file))
                    t = str(day) + '.' + str(month) + '.' + str(year)
                    txt[jid]={'first':t,'all':1, 'vh':1}
                    write_file(file,str(txt))
                    DATA_BD[groupchat][jid]={'timejoin':time.time(),'all':1,'first':t, 'vh':1}
                    
def hnd_data_leave(groupchat,nick,coze,res):
    if groupchat in DATA_BD:
        time.sleep(0.2)
        jid=get_true_jid(groupchat+'/'+nick)
        if jid in DATA_BD[groupchat]:
            if 'timejoin' in DATA_BD[groupchat][jid]:
                dt_utc = datetime.datetime.utcnow()    # Текущее время с учетом часового пояса
                data_now = dt_utc.ctime()
                file='dynamic/'+groupchat+'/' + DATA_FILE
                txt=eval(read_file(file))
                t=round(time.time() - DATA_BD[groupchat][jid]['timejoin'],1)
                tt=txt[jid]['all']+t
                txt[jid]['all']=tt
                txt[jid]['vh']  += 1 
                write_file(file,str(txt))

def hnd_whyky_more(type, source, parameters):
    if source[1] not in GROUPCHATS:
        return
    file = 'dynamic/' + source[1] + '/' + DATA_FILE
    if not source[1] in DATA_BD:
        return
    txt=eval(read_file(file))
    if not parameters:
        reply(type,source,u'а ник?')
        return
    if len(parameters)>19:
        return
    nicks=GROUPCHATS[source[1]]
    if parameters.strip() not in nicks:
        reply(type,source,u'такого ника нет в чате!')
        return
    nick=parameters.strip()
    if GROUPCHATS[source[1]][parameters.strip()]['ishere']==1:
        jid=get_true_jid(source[1]+'/'+nick)
        if jid in txt:
            t=round(time.time() - DATA_BD[source[1]][jid]['timejoin'],1)
            tt=txt[jid]['all']+t
            reply(type,source, u'\n%s провел(а) здесь %s.\nВсего заходов %s.\nПервый заход %s' % (parameters, timeElapsed(tt), txt[jid]['vh'], txt[jid]['first']))
            return
        else:
            reply(type,source,u'на этого юзера нет статистики.')
            return
    reply(type,source,u'такого ника нет в чате')

#---------------------------------------------------------------------------------------------------

register_stage1_init(statuser_load)
register_join_handler(handler_data_join)
register_leave_handler(hnd_data_leave)
register_command_handler(hnd_whyky_more, 'статюзер', [ 'инфо', 'все' ], 10, 'Показывает статистику юзера в чате.\nИдея: Femme\nПрограммер: -=G@D=-\n20 мая 2011г.', 'статюзер <ник>', ['статюзер -=G@D=-'])

#---------------------------------------------------------------------------------------------------